home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / util307.arc / DEFRAG.BAS < prev    next >
BASIC Source File  |  1987-03-04  |  6KB  |  128 lines

  1. 1000 ' Birk Binnard receives EMAIL at COMPUSERVE #72356,556
  2. 1010 '                                RBBS at (213) 410-0714
  3. 1020 ' ++++DEFRAG V 1.0 ++++          RBBS at (213) 973-2374
  4. 1030 '                                RBBS at (213) 973-4497
  5. 1040 DEFINT A-Z:DIM N1$(128),COPY(128,2)
  6. 1050 KEY OFF:CLOSE:CLS:BLANKS$=STRING$(60," "):RESTART=0:L$=STRING$(20,205)
  7. 1060 ON KEY(1) GOSUB 1200'pick file
  8. 1070 ON KEY(2) GOSUB 1400'restart
  9. 1080 ON KEY(3) GOSUB 1270'copy files
  10. 1090 ON KEY(7) GOSUB 1420'delete files
  11. 1100 ON KEY(9) GOSUB 1520'DOS command
  12. 1110 ON KEY (10) GOSUB 1380'end
  13. 1120 ON KEY (11) GOSUB 1580'up
  14. 1130 ON KEY (12) GOSUB 1600'left
  15. 1140 ON KEY (13) GOSUB 1620'right
  16. 1150 ON KEY (14) GOSUB 1640'down
  17. 1160 FOR I=1 TO 10:KEY I,"":NEXT
  18. 1170 KEY 1,"PICK":KEY 2,"RESTRT":KEY 3,"COPY":KEY 7,"DELETE":KEY 9,"COMAND"
  19. 1180 KEY 10,"END":GOTO 1670
  20. 1190 '
  21. 1200 NOW=NOW+1:IF INDEX>=0 AND NOW<=NFIL THEN 1210 ELSE 1220'pick file
  22. 1210 IF COPY(INDEX,2)<0 THEN 1230
  23. 1220 NOW=NOW-1:BEEP:RETURN 2090
  24. 1230 COPY(NOW,1)=INDEX:COPY(INDEX,2)=NOW:SCOL=POS(0)-2
  25. 1240 LOCATE ROW,SCOL:COLOR 12:PRINT USING "###";NOW;:COLOR 7:COL=SCOL
  26. 1250 LOCATE ROW,COL:RETURN 2090
  27. 1260 '
  28. 1270 LOCATE MAXROW+4,1:PRINT"You have selected ";NOW;"of";NFIL;"files."
  29. 1280 LOCATE MAXROW+6,1:PRINT "Do you want to do the Copy operation? (y/n) -->";
  30. 1290 X$=INPUT$(1):PRINT X$:IF INSTR("Yy",X$)>0 THEN 1310
  31. 1300 LOCATE MAXROW+3,1:PRINT BLANKS$:LOCATE MAXROW+5,1:PRINT BLANKS$:GOTO 1360
  32. 1310 KEY OFF:GOSUB 2260:FOR I=1 TO NOW
  33. 1320    LOCATE 3,10
  34. 1330    PRINT"Copying file "+N1$(COPY(I,1))+" from "+SD$+" to "+TD$+"      "
  35. 1340    CMD$="copy "+SD$+N1$(COPY(I,1))+" "+TD$:GOSUB 2210
  36. 1350 NEXT
  37. 1360 N=0:ROW=MINROW:COL=1:RETURN 2010
  38. 1370 '
  39. 1380 RETURN 2130'end program
  40. 1390 '
  41. 1400 CLS:RESTART=-1:CLOSE:KILL DIRFIL$:RETURN 1740'restart
  42. 1410 '
  43. 1420 LOCATE MAXROW+4,1:PRINT "You have selected";NOW;"files to DELETE."
  44. 1430 LOCATE MAXROW+6,1:PRINT"Do you want to do the Delete operation (y/n)?-->";
  45. 1440 X$=INPUT$(1):PRINT X$:IF INSTR("Yy",X$)>0 THEN 1460
  46. 1450 LOCATE MAXROW+3,1:PRINT BLANKS$:LOCATE MAXROW+5,1:PRINT BLANKS$:GOTO 1500
  47. 1460 KEY OFF:GOSUB 2260:FOR I=1 TO NOW'delete files
  48. 1470    LOCATE 3,10:PRINT"Deleting file "+N1$(COPY(I,1))+" from "+SD$+"      "
  49. 1480    KILL SD$+N1$(COPY(I,1))
  50. 1490 NEXT
  51. 1500 CLOSE:KILL DIRFIL$:RETURN 1880
  52. 1510 '
  53. 1520 GOSUB 2260:LOCATE 3,10'DOS command
  54. 1530 INPUT "Enter DOS command -->",CMD$
  55. 1540 CLS:KEY OFF:GOSUB 2210:COLOR 12
  56. 1550 LOCATE 25,1,1,0,13:PRINT"Press any key to continue -->";:X$=INPUT$(1)
  57. 1560 COLOR 7:GOSUB 2260:CLOSE:KILL DIRFIL$:RETURN 1880
  58. 1570 '
  59. 1580 ROW=ROW-1:IF ROW<MINROW THEN ROW=MAXROW
  60. 1590 RETURN 2090
  61. 1600 COL=COL-16:IF COL<1 THEN COL=65
  62. 1610 RETURN 2090
  63. 1620 COL=COL+16:IF COL>80 THEN COL=1
  64. 1630 RETURN 2090
  65. 1640 ROW=ROW+1:IF ROW>MAXROW THEN ROW=MINROW
  66. 1650 RETURN 2090
  67. 1660 '
  68. 1670 KEY(1) ON:KEY(2) ON:KEY(3) ON:KEY(7) ON:FOR I=9 TO 14:KEY(I) ON:NEXT
  69. 1680 GOSUB 2260:MINROW=4
  70. 1690 LOCATE 4,10:PRINT"Enter work (RAM) Drive letter (no colon)-->";:LOCATE ,,1
  71. 1700 RD$="a:":D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D=13 THEN 1740
  72. 1710 IF D<97 THEN D=D+32
  73. 1720 IF D<97 OR D>100 THEN BEEP: GOTO 1690
  74. 1730 RD$=D$+":"'   RAM disk
  75. 1740 LOCATE 6,10:PRINT"Enter Source Drive letter (no colon)-->";:LOCATE ,,1
  76. 1750 D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D<97 THEN D=D+3
  77. 1760 IF D<97 OR D>100 THEN BEEP: GOTO 1740
  78. 1770 SD$=D$+":"'   source drive
  79. 1780 LOCATE 8,10:PRINT"Enter Target Drive letter (no colon)-->";:LOCATE ,,1
  80. 1790 D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D<97 THEN D=D+32
  81. 1800 IF D<97 OR D>100 THEN BEEP: GOTO 1780
  82. 1810 TD$=D$+":"'   target drive
  83. 1820 IF RESTART OR RD$="a:" THEN 1880
  84. 1830 PRINT:PRINT:PRINT TAB(10);
  85. 1840 PRINT"Copying COMMAND.COM and SORT.EXE to work (RAM) disk."
  86. 1850 CMD$="copy a:command.com "+RD$:GOSUB 2210
  87. 1860 ENVIRON "COMSPEC="+RD$+"\COMMAND.COM"'  use command.com on ram disk
  88. 1870 CMD$="copy a:sort.exe "+RD$:GOSUB 2210
  89. 1880 DIRFIL$=RD$+"dir.dat":NOW=0
  90. 1890 FOR I=1 TO 128:COPY(I,1)=-1:COPY(I,2)=-1:NEXT
  91. 1900 PRINT:PRINT TAB(10);
  92. 1910 PRINT"Reading and sorting directory entries for disk in drive "+SD$
  93. 1920 CMD$="dir "+SD$+"|"+RD$+"sort|"+RD$+"sort/+10>"+DIRFIL$:GOSUB 2210
  94. 1930 OPEN DIRFIL$ FOR INPUT AS #1
  95. 1940 PRINT:FOR I=1 TO 4:INPUT#1,A$:NEXT:NFIL=0' discard header lines
  96. 1950 IF EOF(1) THEN 1990 ELSE INPUT#1,A$:NFIL=NFIL+1:MID$(A$,9)="."
  97. 1960 N=INSTR(9,A$," "):IF N=10 THEN MID$(A$,9)=" "
  98. 1970 N=INSTR(1,A$," "):IF N>8 THEN 1980 ELSE A$=LEFT$(A$,N-1)+MID$(A$,9,4)
  99. 1980 N1$(NFIL)=LEFT$(A$,12):GOTO 1950
  100. 1990 NFIL=NFIL-2:N=0:COL=1:ROW=MINROW:IF NFIL>0 THEN 2010
  101. 2000 CLS:PRINT"The disk in drive "+SD$+" has no standard files.":GOTO 2100
  102. 2010 GOSUB 2260:PRINT "The files on drive "+SD$+" are:"
  103. 2020 N=N+1:LOCATE ROW,COL
  104. 2030 COLOR 12:IF COPY(N,2)<0 THEN PRINT "   "; ELSE PRINT USING"###";COPY(N,2);
  105. 2040 COLOR 7:PRINT CHR$(27)+N1$(N);
  106. 2050 COL=COL+16:IF COL>80 THEN ROW=ROW+1:COL=1
  107. 2060 IF N<NFIL THEN 2020 ELSE IF COL=1 THEN ROW=ROW-1
  108. 2070 MAXROW=ROW:ROW=MINROW:COL=1
  109. 2080 PRINT:PRINT:PRINT"There are";NFIL;"files on the disk in drive ";SD$;
  110. 2090 INDEX=(ROW-MINROW)*5+(COL+15)/16:IF INDEX>NFIL THEN INDEX=-1
  111. 2100 KEY ON:LOCATE ROW,COL+2,1,0,13
  112. 2110 GOTO 2110'loop waiting for fkey interrupt
  113. 2120 '
  114. 2130 CLOSE #1:KILL DIRFIL$:IF RD$="a:" THEN 2190
  115. 2140 KILL RD$+"sort.exe":KILL RD$+"command.com"
  116. 2150 ENVIRON "COMSPEC=A:\COMMAND.COM"'  use command.com on drive a
  117. 2160 KEY OFF:KEY 1,"LIST ":KEY 2,"RUN"+CHR$(13):KEY 3,"LOAD"+CHR$(34)
  118. 2170 KEY 4,"SAVE"+CHR$(34):KEY 5,"FILES":KEY 6,"SYSTEM":KEY 7,"EDIT "
  119. 2180 KEY 8,"CLS"+CHR$(13):KEY 9,"KEY ":KEY 10,"RENUM "
  120. 2190 GOSUB 2260:LOCATE 3,1,1,11,12:PRINT"DEFRAG ended.":KEY ON:PRINT:END
  121. 2200 '
  122. 2210 T1=PEEK(&H30):T2=PEEK(&H31)'execute shell for cmd$
  123. 2220 SHELL CMD$
  124. 2230 POKE &H30,T1:POKE &H31,T2
  125. 2240 RETURN
  126. 2250 '
  127. 2260 CLS:COLOR 14:PRINT TAB(10);L$;" D E F R A G ";L$:COLOR 7:RETURN
  128.